-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Migrate volume improvements, to bypass secondary storage when copy volume between pools is allowed directly #11625
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Migrate volume improvements, to bypass secondary storage when copy volume between pools is allowed directly #11625
Conversation
@blueorangutan package |
@sureshanaparti a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #11625 +/- ##
============================================
+ Coverage 17.39% 17.53% +0.14%
- Complexity 15283 15473 +190
============================================
Files 5889 5897 +8
Lines 526183 527356 +1173
Branches 64242 64407 +165
============================================
+ Hits 91541 92492 +951
- Misses 424298 424456 +158
- Partials 10344 10408 +64
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 14980 |
@blueorangutan package |
@sureshanaparti a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR enhances the volume migration functionality to bypass secondary storage when direct copy between pools is possible, improving performance for supported pool types.
Key changes:
- Added
poolType
parameter to volume import/update operations to track storage pool types - Implemented logic to determine when secondary storage can be bypassed during volume migration
- Updated volume database records to include pool type information when pools change
Reviewed Changes
Copilot reviewed 27 out of 28 changed files in this pull request and generated 1 comment.
Show a summary per file
File | Description |
---|---|
AncientDataMotionStrategy.java | Adds bypass logic for supported pool types (NFS, Filesystem) with scope validation |
VolumeOrchestrator.java | Updates import/update methods to include poolType parameter |
Multiple volume management files | Adds setPoolType() calls when updating volume pool assignments |
KVMStorageProcessor.java | Fixes path handling logic for volume copying between pools |
VMSnapshotManagerImpl.java | Corrects spelling error in exception messages |
Scope classes | Adds toString() methods for better debugging |
Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.
plugins/hypervisors/kvm/src/main/java/com/cloud/hypervisor/kvm/storage/KVMStorageProcessor.java
Show resolved
Hide resolved
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 14981 |
@blueorangutan test |
@weizhouapache a [SL] Trillian-Jenkins test job (ol8 mgmt + kvm-ol8) has been kicked to run smoke tests |
[SF] Trillian test result (tid-14312)
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
overall lgtm
not tested yet
...datamotion/src/main/java/org/apache/cloudstack/storage/motion/AncientDataMotionStrategy.java
Outdated
Show resolved
Hide resolved
...chestration/src/main/java/org/apache/cloudstack/engine/orchestration/VolumeOrchestrator.java
Show resolved
Hide resolved
d646d67
to
89813ff
Compare
@blueorangutan package |
@sureshanaparti a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
@sureshanaparti a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 15073 |
@blueorangutan test |
@sureshanaparti a [SL] Trillian-Jenkins test job (ol8 mgmt + kvm-ol8) has been kicked to run smoke tests |
[SF] Trillian test result (tid-14425)
|
…volumes when change in pool type (shared or local) Currently, Migrate VM with volume(s) bypasses the service and disk offerings of the volumes, as the target pools for migration are specified, which ignores the offerings. Offering change is required when pool type (shared or local) is changed, mainly - when volume on shared pool is migrated to local pool - when volume on local pool is migrated to shared pool
…offering type mismatches (both are not shared/local)
…ween primary storages
@blueorangutan package |
@sureshanaparti a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 15177 |
@blueorangutan test |
@DaanHoogland a [SL] Trillian-Jenkins test job (ol8 mgmt + kvm-ol8) has been kicked to run smoke tests |
[SF] Trillian test result (tid-14452)
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, tested the following scenarios and migrations bypassed the secondary storage

Test Case Execution | Result |
---|---|
Migrate volumes from nfs storage to another nfs storage in the same cluster | Pass |
Migrate a volume from local storage to nfs storage | Pass |
MIgrate a volume from nfs storage to local storage | Pass |
Migrate a volume from Ceph storage to a nfs storage | Pass |
Migrate a volume from a nfs storage to ceph storage | Pass |
Migrate a volume from local to ceph storage | Pass |
Migrate a volume from ceph storage to local storage | Pass |
perfect testing @kiranchavala just a question, have you tested online/offline ceph to ceph migration ? |
… offerings with tags mismatch with storage tags
@blueorangutan package |
@sureshanaparti a [SL] Jenkins job has been kicked to build packages. It will be bundled with KVM, XenServer and VMware SystemVM templates. I'll keep you posted as I make progress. |
@weizhouapache I think, it's offline ceph to ceph migration. @kiranchavala can you confirm. |
No, I didn't test ceph to ceph offline/online migration |
Packaging result [SF]: ✔️ el8 ✔️ el9 ✔️ el10 ✔️ debian ✔️ suse15. SL-JID 15316 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Simulator CI seems to be been failing due to this PR change. I was failing in this PR and now in main @harikrishna-patnala @sureshanaparti
|
…lume between pools is allowed directly (apache#11625) * Migrate volume improvements, to bypass secondary storage when copy volume between pools is allowed directly * Bypass secondary storage for copy volume between zone-wide pools and - local storage on host in the same zone - cluser-wide pools in the same zone * Bypass secondary storage for volumes on ceph/rdb pool when the scope permits * Fix dest disk format while migrating volume from ceph/rbd to nfs, and some code improvements * unit tests * Update suitable disk offering(s) for volume(s) after migrate VM with volumes when change in pool type (shared or local) Currently, Migrate VM with volume(s) bypasses the service and disk offerings of the volumes, as the target pools for migration are specified, which ignores the offerings. Offering change is required when pool type (shared or local) is changed, mainly - when volume on shared pool is migrated to local pool - when volume on local pool is migrated to shared pool * Update with proper message while migrate volume when target pool and offering type mismatches (both are not shared/local) * Consider host scope first during endpoint selection while copying between primary storages * Update disk offering count (for listDiskOfferings api) while removing offerings with tags mismatch with storage tags
Description
This PR improves migrate volume, to bypass secondary storage when copy volume between pools is allowed directly.
Also, includes the following improvements:
Types of changes
Feature/Enhancement Scale or Bug Severity
Feature/Enhancement Scale
Bug Severity
Screenshots (if appropriate):
How Has This Been Tested?
Tested (offline) volume migration between:
How did you try to break this feature and the system with this change?